Application deployment

ABSTRACT

A method, a computer program product, and a computer system for deploying an application in a distributed processing environment. A computer analyzes an application so as to determine one or more requirements for executing the application. The computer generates an application profile based on the one or more requirements, wherein the application profile is a representative of the one or more requirements for a platform of the distributed processing environment to host the application. The computer controls deployment of the application on the platform of the distributed processing environment based on the application profile.

BACKGROUND

The present invention relates generally to application deployment, andmore particularly to deploying an application in a distributedprocessing environment.

When deploying an application in a distributed processing environment(such as a cloud environment), an advantage from an applicationdevelopment perspective is that little or no consideration may be madeby the application developer as to where the application is deployed.For instance, as long as the application can use the resource(s) itrequires, the application will run on the platform it is deployed on.However, at a management level, the consideration as to which platformthe application should be used to host the application can depend onmany factors. Such factors may, for example, include: (i) the technicalability to host the application, e.g., whether or not the platform hasthe resources and/or functionality required to host the application;(ii) whether there are multiple platforms where an application may behosted; and (iii) operating capacity of the platform(s).

Many considerations may therefore be important when it is decided howand where to deploy an application in a distributed processingenvironment and, as detailed above, an application developer may notknow or be concerned about such considerations. Indeed, requiring anapplication developer to be fully aware of an application's needs anddeployment consideration may place an undue burden on the developer andmay require significant effort and resources to be consumed.Accordingly, it will be beneficial to provide assistance in thedeployment of an application in a distributed processing environment andreduce an amount of human input and/or interaction that may otherwise berequired.

SUMMARY

In one aspect, a method for deploying an application in a distributedprocessing environment is provided. The computer-implemented methodcomprises analyzing an application so as to determine one or morerequirements for executing the application. The computer-implementedmethod further comprises generating an application profile based on theone or more requirements, wherein the application profile is arepresentative of the one or more requirements for a platform of thedistributed processing environment to host the application. Thecomputer-implemented method further comprises controlling deployment ofthe application on the platform of the distributed processingenvironment based on the application profile.

In another aspect, a computer program product for deploying anapplication in a distributed processing environment is provided. Thecomputer program product comprises a computer readable storage mediumhaving program code embodied therewith. The program code is executableto analyze an application so as to determine one or more requirementsfor executing the application; generate an application profile based onthe one or more requirements, wherein the application profile is arepresentative of the one or more requirements for a platform of thedistributed processing environment to host the application; and controldeployment of the application on the platform of the distributedprocessing environment based on the application profile.

In yet another aspect, a computer system for deploying an application ina distributed processing environment is provided. The computer systemcomprises one or more processors, one or more computer readable tangiblestorage devices, and program instructions stored on at least one of theone or more computer readable tangible storage devices for execution byat least one of the one or more processors. The program instructions areexecutable to analyze an application so as to determine one or morerequirements for executing the application. The program instructions arefurther executable to generate an application profile based on the oneor more requirements, wherein the application profile is arepresentative of the one or more requirements for a platform of thedistributed processing environment to host the application. The programinstructions are further executable to control deployment of theapplication on the platform of the distributed processing environmentbased on the application profile.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 depicts a cloud computing environment, in accordance with anembodiment of the present invention.

FIG. 2 depicts abstraction model layers, in accordance with anembodiment of the present invention.

FIG. 3 is a simplified flow diagram of a method for deploying anapplication in a distributed processing environment, in accordance withan embodiment of the present invention.

FIG. 4 is a flow diagram of an exemplary implementation of a method, inaccordance with an embodiment of the present invention.

FIG. 5 illustrates a computer system/server, in accordance with anembodiment of the present invention.

DETAILED DESCRIPTION

It should be understood that the Figures are merely schematic and arenot drawn to scale. It should also be understood that the same referencenumerals are used throughout the Figures to indicate the same or similarparts.

In the context of the present application, where embodiments of thepresent invention constitute a method, it should be understood that sucha method is a process for execution by a computer, i.e. is acomputer-implementable method. The various steps of the method thereforereflect various parts of a computer program, e.g. various parts of oneor more algorithms.

Also, in the context of the present application, an applicationprocessing system may be a single device or a collection of distributeddevices that are adapted to execute one or more embodiments of themethods of the present invention. For instance, a system may be apersonal computer (PC), a server or a collection of PCs and/or serversconnected via a network such as a local area network, the Internet andso on to cooperatively execute at least one embodiment of the methods ofthe present invention.

The present invention seeks to provide a method for deploying anapplication on suitable host platform of distributed processingenvironment offering a scalable service architecture (e.g. a cloudcomputing environment). The present invention further seeks to provide acomputer program product including computer program code forimplementing the method when executed on a processor of a processingsystem. The present invention yet further seeks to provide a processingsystem adapted to execute this computer program code.

According to an embodiment of the present invention there is provided acomputer-implemented method for deploying an application in adistributed processing environment. The method comprises analyzing anapplication so as to determine one or more requirements for executingthe application. An application profile is generated based on the one ormore requirements, the application profile being representative of oneor more requirements for a platform to host the application. The methodfurther comprises controlling deployment of the application on a hostplatform of the distributed processing environment based on theapplication profile.

Proposed is a concept of analyzing an application to generate a profileof its requirements. The profile may then be assessed againstcharacteristics and/or properties of a deployment environment orplatform to determine if the environment or platform is suitable forhosting the application. In this way, an application developer maysimply deploy an application to a cloud environment, wherein theapplication will then be analyzed to identify requirements orimplementation constraints of the application without input from theapplication developer. Such identified requirements or constraintsplaced on a host platform by the application may profile theapplication, and this profile may then be used to determine the mostappropriate or suitable hosting environment or platform for theapplication.

The proposed concept(s) may be undertaken automatically (e.g. in a fullyautomated manner) within the distributed processing environment. Thus,within a distributed processing environment (such as a cloud deploymentenvironment for example), there may be provided a system for profilingrequirements of an application and then determining where it is mostappropriate to host the application (based on the profile ofrequirements of the application). This may provide the benefit that anapplication developer may not need to fully understand the requirementsof their application, and may therefore avoid any need for the developerto build or provision an environment to suit the application. Further,embodiments may avoid a need for human intervention when deploying anapplication, thereby enabling real-time deployment of an application onthe most appropriate platform while meeting the need of the applicationand without human involvement. By way of example, an applicationdeveloper seeking to deploy an application to a cloud hostingenvironment, may, with little effort, choose to upload their applicationto the cloud, and from there the application will then be deployedaccording to proposed embodiments.

Thus, embodiments may provide an approach to determining an optimalenvironment for deployment of an application within a distributedprocessing environment (such as a cloud environment). Such an approachmay employ an application profile which represents requirement orconstraints that the application places on a host platform. The profilemay be analyzed in conjunction with characteristics and/or properties ofavailable host platforms so as to determine which, if any, of theavailable host platforms may be suitable for hosting the application.

For instance, a cloud services provider (whether public or privatecloud) may have multiple platforms on which applications may be hosted.These platforms may vary in architecture of hardware, operating systemand software/middleware stacks. By analyzing an application anddetermining requirements of the applications, embodiments may generatean application profile which may then be used to select (or evenprovision) a platform to host the application and then deploy theapplication to the selected platform. There may be various technical,business and/or cost reasons for choosing between available platforms,and embodiments may take these into account when selecting a host basedon the application profile.

In an embodiment, the step of controlling deployment of the applicationmay comprise analyzing the application profile and one or moreproperties of the host platform to determine if the host platform of thedistributed processing environment may host the application. In thisway, it may be determined whether or not a particular host platform iscapable of hosting the application. Deployment of the application maythen be controlled based on the outcome the determination. For example,if it is determined that the host platform of the distributed processingenvironment may host the application, an embodiment may further comprisethe step of deploying the application on the host platform. Conversely,if is determined that the host platform of the distributed processingenvironment may not host the application, an embodiment may furthercomprise the step of not deploying the application on the host platform.Deployment of the application to a host platform that does not meet therequirement(s) and/or constraint(s) that would be placed on it by theapplication may therefore be avoided by proposed embodiments.Embodiments may therefore be adapted to only deploy the application to ahost platform that is capable (e.g. has the appropriate resource(s),capabilities or capacity) of hosting the application.

Embodiments may further comprise the step of configuring one or moreproperties of the host platform based on the application profile. Forinstance, where its identified that a host platform may be capable ofhosting the application subject to a property being changed, modified orotherwise reconfigured, embodiment may adapt the property of the hostplatform so as to enable the host platform to cater for deployment ofthe application. Thus, embodiments may help to ensure that anapplication is deployed on a host platform that is appropriatelyconfigured for successful execution of the application. This may, forexample, alleviate a need for a developer or administrator to configuredthe host platform, thus reducing a need for human intervention.

The distributed processing environment may comprise first and secondhost platforms. The step of controlling deployment of the applicationmay then comprise: analyzing the application profile and one or moreproperties of the each of the first and second host platforms todetermine first and second indicators of hosting suitability for thefirst and second platforms, respectively; and deploying the applicationon one of the first and second host platforms based on the first andsecond indicators of hosting suitability. Such embodiments may thereforeidentify the most appropriate host platform for application deploymentfrom a plurality of available host platforms. For instance, the most‘technically-suitable’ host platform may be selected from a range ofplatforms provided by a distributed processing environment. Thisselection may take account of various factors, including business orcosts constraints, when determining an indicator of hosting suitability.In this way, embodiments may dynamically and/or flexibly adapted tovarious technical and non-technical considerations when determining awhich host platform to employ for application deployment. Improvedflexibility and/or accuracy in selecting a host platform may thereforebe provided by proposed embodiments.

In an embodiment, the step of analyzing may comprise: analyzing at leastone of: source code of the application: application logic of theapplication; a component or resource of the application; status changesof the application; and input/output data flows of the application. Forexample, an embodiment may analyze source code of the application todetermine if the application uses a particular library and/or if theapplication requires a hosting environment be configured in a specificway. Such identified requirements may then be used to ‘profile’ theapplication for the purpose of assessment against one or more availablehosting platforms.

By way of further example, the step of analyzing may comprisedetermining at least one of: a programming language of the application;a class library used by the application; an application/middlewarerequirement; a data access configuration; a security consideration; aruntime server employed by the application; a database employed by theapplication; a message system employed by the application; and anoperating system employed by the application. For instance, theapplication may be analyzed to identify if the application uses alibrary that is part of the Java™ Enterprise Edition (JEE)specification. Upon identification of such a used, a requirement may beflagged that indicates a JEE server is required. It may also imply whatparticular feature needs to be supported. In another example, platformconfiguration requirements may be determined. For example, it may bedetermined that the application enforces HTTP or networking request thatrequire a platform to be configured for HTTP load balancing, etc. In yetanother example, an application/middleware requirement may beidentified, which may include identifying that a particular applicationserver is required to host the application and/or that a certainmessaging framework is required. In another example, analysis of theapplication may determine a data access configuration is required whichnecessitates access to any, or a specific, database/file system. By wayof yet another example, embodiments may determine one or more securityconsiderations, such as a need for a particular authenticationmechanism, transport layer security and/or security role structure.

By way of example, the generated application profile may comprise a tagthat is indicative of a requirement for a platform to host theapplication. Embodiments may thus employ one or more simple identifiersthat may be associated with an application. Such an identifier may, forexample, comprise a simple ‘hashtag’ or other similar text-basedidentifier for representing a requirement of the application.

Further, the host platform may be associated with one or more tagsdescribing one or more properties of the host platform. The step ofcontrolling deployment of the application may then comprise comparingthe tag of the application profile with the one or more tags associatedwith the host platform to determine if the host platform of thedistributed processing environment may host the application. Simpletext-string identification and comparison may thus be used to assessapplication requirements against host platform properties. Embodimentsmay therefore avoid a need for complex and/or computationally-expensivealgorithms when assessing whether a host platform meets therequirement(s) of an application.

In an exemplary embodiment, the application may be adapted to implementa service in a cloud environment. By way of further example, theapplication may be adapted to implement a part of amicro-service-oriented architecture.

According to another embodiment of the present invention, there isprovided a computer program product for deploying an application in adistributed processing environment. The computer program productcomprises a computer readable storage medium having program instructionsembodied therewith. The program instructions are executable by aprocessing unit to cause the processing unit to perform a methodcomprising: analyzing an application so as to determine one or morerequirements for executing the application; generating an applicationprofile based on the one or more requirements, the application profilebeing representative of one or more requirements for a platform to hostthe application; and controlling deployment of the application on a hostplatform of the distributed processing environment based on theapplication profile.

According to yet another aspect, there is provided an applicationprocessing system comprising at least one processor and the computerprogram product according to one or more embodiments. The at least oneprocessor is adapted to execute the computer program code of saidcomputer program product.

According to yet another aspect, there is provided a system fordeploying an application in a distributed processing environment. Thesystem comprises an analysis component adapted to analyze an applicationso as to determine one or more requirements for executing theapplication. The system also comprises a profile component adapted togenerate an application profile based on the one or more requirements,the application profile being representative of one or more requirementsfor a platform to host the application. The system also comprises adeployment controller adapted to control deployment of the applicationon a host platform of the distributed processing environment based onthe application profile.

The system may be adapted to implement a part of an off-premiseplatform, such as a cloud-based system or server.

Thus, there may be proposed a system which evaluates an application anddetermines requirements it places on a platform of successfulexecution/implementation. The requirements may be represented in aprofile associated with the application, for example in the form of tagsor identifiers, and deployment of the application on a host platform maythen be controlled (e.g. accepted, denied and/or configured) based onthe profile. For instance, the profile may be analyzed in conjunctionwith properties of a host platform to determine if the host platform issuitable for hosting the application. Based on the result of thisdetermination, the host platform may be configured (or re-configured)and the application then deployed on the host platform. This may avoid adeveloper and/or administrator needing to have any knowledge and/orinput on the deployment of an application on a host platform of adistributed processing environment.

Proposed are concepts for determining the hosting or deploymentrequirement(s) of an application (e.g. by analyzing aspects of theapplication such as its source code, logic flow, input/output dataflows, resource calls/requests, etc.) and then assessing therequirement(s) against properties of one or more available hostingplatforms so as to identify which of the hosting platforms are suitablefor hosting the application. Thus, embodiments may implement a conceptof ‘profiling’ hosting or deployment requirements of an application, andthen using an obtained profile to determine suitability of a platform orenvironment for hosting the application. Embodiments may therefore beparticularly for use in conjunction with a cloud computing environmentthat is capable of providing many hosting platforms or environments withdiffering characteristics and/or capabilities.

By way of example, a proposed concept may analyze an application toidentify a programming language of the application, a class library usedby the application; a runtime server employed by the application; and/oran operating system employed by the application. Identification of suchaspects of an application my enable determination of hosting ordeployment requirements of the application. In other words, theapplication may be analyzed to identify indicators of hosting/deploymentrequirements. Determined requirements of the application may then berepresented in an application profile, e.g. using tags or identifiersthat are descriptive of the requirements, and based on such a profile itmay be determined whether or not the application may be deployed on anavailable platform. Such a concept may be implemented as a softwaretool, thus facilitating the identification of a suitable hostingplatform within a cloud computing environment.

By interrogating application source code using automated softwaretooling focused on indicators of hosting requirements, constraints orrequirements that may be placed on a hosting platform may be identifiedand represented in a profile of the application. By analyzing such aprofile against a hosting platform (e.g. by automated comparison of thecontent of the profile with a description of the hosting platformsproperties, capabilities or characteristics), suitability of the hostingplatform for deploying the application may be assessed without humaninvolvement.

For example, if one considers a scenario wherein a distributedprocessing environment has the following three potential platforms, eachwith different capabilities represented by tags prefixed with thecharacter “#” (otherwise known as ‘hashtags’):

(a) Platform A: z/OS®+CICS® (Java™ EE Liberty server, DB2®)—supportedtags: #cics, #cobol, #c, #assembler, #pli, #java, #jee, #db2;

(b) Platform B: z/OS®+CICS® (Traditional languages, DB2®)—supportedtags: #cics, #cobol, #c, #assembler, #pli, #db2; and

(c) Platform C: z/OS®+Java™ EE Liberty server—supported tags: #java,#jee,

A developer may have an application he/she wishes to deploy in thedistributed processing environment.

According to a proposed embodiment, the deployment process may besummarized as follows:

(i) The application developer deploys the application “App1”;

(ii) A deployment server (adapted to implement an embodiment of theinvention) receives the application source code and initiates a scan ofthe source code. The scan may then determine the following: (a) theapplication code is written in Java™ (tag #java); and (b) theapplication uses the “javax.ws.rs.*” class libraries (as determined bythe import statement in code), which requires a Java™ EE server runtime(tag #jee); and (c) the application uses the “com.ibm.cics.server.*”class libraries (tag #cics);

(iii) Upon completion of the application code scan, three tagsdescriptive of the three identified indicators or requirements aregenerated as a profile for the application, namely “#java”, “#jee” and“#cics”;

(iv) The tags of the profile are analyzed (e.g. compared) against thesupported tags of the three available platforms to determine if any ofthe platforms is able to support all three of the identifiedrequirements of the application. In this exemplary instance, acomparison of the tags results in the determination that Platform A isthe only platform able to host all three requirements;

(v) Based on the result of step (iv), the deployment server controlsdeployment of the application to the suitable platform (which in thisexemplary instance is Platform A).

Illustrative embodiments may therefore provide a tool that helpsidentify candidate platforms for hosting an application. It may do thisby analyzing the application to generate a profile representing hostingrequirement of the application and then comparing the profile withproperties of available platforms. Proposed concepts may thus providehosting requirement information that can be used to decide whichplatforms, if any, are suitable for hosting a specific application.Dynamic distributed application deployment may therefore be provided byproposed embodiments.

Many different ways to identify hosting requirements or constraints ofan application may be employed by embodiments, and these may beimplemented in isolation or in combination. Modifications and additionalsteps to a traditional (application) processing systems may also beproposed which may enhance the value and utility of the proposedconcepts.

Illustrative embodiments may be utilized in many different types ofapplication processing environments. Illustrative embodiments may, forexample, be employed in relation to stateless and scalable cloud-basedapplications for data and/or event processing.

In order to provide a context for the description of elements andfunctionality of the illustrative embodiments, the figures are providedhereafter as an example environment in which aspects of the illustrativeembodiments may be implemented. It should be appreciated that thefigures are only exemplary and not intended to assert or imply anylimitation with regard to the environments in which aspects orembodiments of the present invention may be implemented. Manymodifications to the depicted environments may be made without departingfrom the spirit and scope of the present invention.

Also, those of ordinary skill in the art will appreciate that thehardware and/or architectures in the Figures may vary depending on theimplementation. Further, the processes of the illustrative embodimentsmay be applied to multiprocessor/server systems, other than thoseillustrated, without departing from the scope of the proposed concepts.

Moreover, the system may take the form of any of a number of differentprocessing devices including client computing devices, server computingdevices, a tablet computer, laptop computer, telephone or othercommunication devices, personal digital assistants (PDAs), or the like.Thus, the system may essentially be any known or later-developedprocessing system without architectural limitation.

A proposed concept may enhance a cloud-based service provisioning systemby reducing developer and/or administrator involvement or applicationdeployment more efficient. Embodiments may enable application to beanalyzed and deployed on appropriate hosting platforms. Such proposalscan extend or improve the processing capabilities or efficiency of acloud-based software delivery system.

It is understood that although this disclosure includes a detaileddescription on cloud computing, implementation of the teachings recitedherein are not limited to a cloud computing environment. Rather,embodiments of the present invention are capable of being implemented inconjunction with any other type of computing environment now known orlater developed.

Cloud computing is a model of service delivery for enabling convenient,on-demand network access to a shared pool of configurable computingresources (e.g., networks, network bandwidth, servers, processing,memory, storage, applications, virtual machines, and services) that canbe rapidly provisioned and released with minimal management effort orinteraction with a provider of the service. This cloud model may includeat least five characteristics, at least three service models, and atleast four deployment models.

Characteristics are as follows:

On-demand self-service: a cloud consumer can unilaterally provisioncomputing capabilities, such as server time and network storage, asneeded automatically without requiring human interaction with theservice's provider.

Broad network access: capabilities are available over a network andaccessed through standard mechanisms that promote use by heterogeneousthin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

Resource pooling: the provider's computing resources are pooled to servemultiple consumers using a multi-tenant model, with different physicaland virtual resources dynamically assigned and reassigned according todemand. There is a sense of location independence in that the consumergenerally has no control or knowledge over the exact location of theprovided resources but may be able to specify location at a higher levelof abstraction (e.g., country, state, or datacenter).

Rapid elasticity: capabilities can be rapidly and elasticallyprovisioned, in some cases automatically, to quickly scale out andrapidly released to quickly scale in. To the consumer, the capabilitiesavailable for provisioning often appear to be unlimited and can bepurchased in any quantity at any time.

Measured service: cloud systems automatically control and optimizeresource use by leveraging a metering capability at some level ofabstraction appropriate to the type of service (e.g., storage,processing, bandwidth, and active user accounts). Resource usage can bemonitored, controlled, and reported, providing transparency for both theprovider and consumer of the utilized service.

Service Models are as follows:

Software as a Service (SaaS): the capability provided to the consumer isto use the provider's applications running on a cloud infrastructure.The applications are accessible from various client devices through athin client interface such as a web browser (e.g., web-based e-mail).The consumer does not manage or control the underlying cloudinfrastructure including network, servers, operating systems, storage,or even individual application capabilities, with the possible exceptionof limited user-specific application configuration settings.

Platform as a Service (PaaS): the capability provided to the consumer isto deploy onto the cloud infrastructure consumer-created or acquiredapplications created using programming languages and tools supported bythe provider. The consumer does not manage or control the underlyingcloud infrastructure including networks, servers, operating systems, orstorage, but has control over the deployed applications and possiblyapplication hosting environment configurations.

Infrastructure as a Service (IaaS): the capability provided to theconsumer is to provision processing, storage, networks, and otherfundamental computing resources where the consumer is able to deploy andrun arbitrary software, which can include operating systems andapplications. The consumer does not manage or control the underlyingcloud infrastructure but has control over operating systems, storage,deployed applications, and possibly limited control of select networkingcomponents (e.g., host firewalls).

Deployment Models are as follows:

Private cloud: the cloud infrastructure is operated solely for anorganization. It may be managed by the organization or a third party andmay exist on-premises or off-premises.

Community cloud: the cloud infrastructure is shared by severalorganizations and supports a specific community that has shared concerns(e.g., mission, security requirements, policy, and complianceconsiderations). It may be managed by the organizations or a third partyand may exist on-premises or off-premises.

Public cloud: the cloud infrastructure is made available to the generalpublic or a large industry group and is owned by an organization sellingcloud services.

Hybrid cloud: the cloud infrastructure is a composition of two or moreclouds (private, community, or public) that remain unique entities butare bound together by standardized or proprietary technology thatenables data and application portability (e.g., cloud bursting forload-balancing between clouds).

A cloud computing environment is service oriented with a focus onstatelessness, low coupling, modularity, and semantic interoperability.At the heart of cloud computing is an infrastructure that includes anetwork of interconnected nodes.

Referring now to FIG. 1, illustrative cloud computing environment 50 isdepicted. As shown, cloud computing environment 50 includes one or morecloud computing nodes 10 with which local computing devices used bycloud consumers, such as, for example, personal digital assistant (PDA)or cellular telephone 54A, desktop computer 54B, laptop computer 54C,and/or automobile computer system 54N may communicate. Nodes 10 maycommunicate with one another. They may be grouped (not shown) physicallyor virtually, in one or more networks, such as Private, Community,Public, or Hybrid clouds as described hereinabove, or a combinationthereof. This allows cloud computing environment 50 to offerinfrastructure, platforms and/or software as services for which a cloudconsumer does not need to maintain resources on a local computingdevice. It is understood that the types of computing devices 54A-N shownin FIG. 1 are intended to be illustrative only and that computing nodes10 and cloud computing environment 50 can communicate with any type ofcomputerized device over any type of network and/or network addressableconnection (e.g., using a web browser).

Referring now to FIG. 2, a set of functional abstraction layers providedby cloud computing environment 50 (FIG. 1) is shown. It should beunderstood in advance that the components, layers, and functions shownin FIG. 2 are intended to be illustrative only and embodiments of theinvention are not limited thereto. As depicted, the following layers andcorresponding functions are provided:

Hardware and software layer 60 includes hardware and softwarecomponents. Examples of hardware components include: mainframes 61; RISC(Reduced Instruction Set Computer) architecture based servers 62;servers 63; blade servers 64; storage devices 65; and networks andnetworking components 66. In some embodiments, software componentsinclude network application server software 67 and database software 68.

Virtualization layer 70 provides an abstraction layer from which thefollowing examples of virtual entities may be provided: virtual servers71; virtual storage 72; virtual networks 73, including virtual privatenetworks; virtual applications and operating systems 74; and virtualclients 75.

In one example, management layer 80 may provide the functions describedbelow. Resource provisioning 81 provides dynamic procurement ofcomputing resources and other resources that are utilized to performtasks within the cloud computing environment. Metering and Pricing 82provide cost tracking as resources are utilized within the cloudcomputing environment, and billing or invoicing for consumption of theseresources. In one example, these resources may include applicationsoftware licenses. Security provides identity verification for cloudconsumers and tasks, as well as protection for data and other resources.User portal 83 provides access to the cloud computing environment forconsumers and system administrators. Service level management 84provides cloud computing resource allocation and management such thatrequired service levels are met. Application deployment 85 providesapplication deployment according to proposed embodiments.

Workloads layer 90 provides examples of functionality for which thecloud computing environment may be utilized. Examples of workloads andfunctions which may be provided from this layer include: mapping andnavigation 91; software development and lifecycle management 92; virtualclassroom education delivery 93; data analytics processing 94;transaction processing 95; and mobile desktop 96.

A proposed concept may enhance an application deployment system byreducing developer involvement while maximizing quality of service.Embodiments may also enable flexibility to provide more efficientdeployment of applications. Such proposals can extend or improve thedeployment capabilities or efficiency of an intelligent Platform as aService (PaaS) system or component.

FIG. 3 is a simplified flow diagram of method 300 for deploying anapplication in a distributed processing environment, in accordance withan embodiment of the present invention. In particular, for this example,the application may be an application that is adapted to implement aservice in a cloud environment and, more specifically, may be adapted toimplement a part of a micro-service-oriented architecture.

At step 310, a computer analyzes the application so as to determine oneor more requirements for executing the application. The process ofanalyzing the application may comprise analyzing the source code of theapplication, application logic of the application, a component orresource of the application, status changes of the application, and/orinput/output data flows of the application. In particular, such analysismay aim to determine indicators of one or more constraints orrequirements of the application, such as a programming language of theapplication, a class library used by the application, a runtime serveremployed by the application, and/or an operating system employed by theapplication.

At step 320, the computer generates an application profile, based on therequirements identified at step 310. For example, the applicationprofile is generated from the identified requirements of the applicationso that it is representative of the requirements for a platform to hostthe application. The step 310 of generating the application profilefurther comprises generating, for each identified requirement, a tag ortext-based descriptor that is indicative of the requirement. Such a tagmay comprise a simple text-string prefixed with an identifier of the tag(e.g., a hash character or “#”), wherein the text-string provides asimplified description or summary of the requirement. By way of example,in response to identifying (e.g., at step 310) that an applicationrequires the use of a Java™ server, at step 320, the computer maygenerate the tag “#java” to indicate this requirement.

At steps 325, the computer controls deployment of the application on ahost platform of the distributed processing environment, based on thegenerated application profile. As illustrated in FIG. 3, steps 325 ofcontrolling deployment of the application comprises multiple steps. Themultiple steps include steps 330-360. At step 330, the computer analyzesthe application profile and properties of the host platform of thedistributed processing environment to determine whether the hostplatform may host the application. In particular, by way of exampleonly, the host platform is associated with tags describing theproperties of the host platform. These tags may be in the same form asthose of the application profile, namely simple text-strings prefixedwith an identifier of the tag (e.g., a hash character or “#”), whereinthe text-string provides a simplified description or summary of aproperty of the host platform. The analysis in method 300 may thereforesimply comprise the process of comparing the tag(s) of the applicationprofile with the tag(s) associated with the host platform to determinewhether the host platform of the distributed processing environment mayhost the application. For example, if all tags of the applicationprofile are supported by the host platform (e.g., if each tag of theapplication profile is found to have a matching tag amongst the tagsassociated with the host platform), the computer determines that thehost platform can host the application.

At decision block 335, the computer assesses the determination made atstep 330. In response to determining that the host platform may host theapplication because its properties meet the requirements of theapplication (YES branch of decision block 335), the computer at step 340deploys the application on the host platform. In response to determiningthat the host platform may not host the application because itsproperties do not meet the requirements of the application (NO branch ofdecision block 335), the computer, decision block 345, the computerassesses whether or not the platform may be reconfigured so as to enableit to host the application.

In response to determining that the platform may be reconfigured so asto enable it to host the application (YES branch of decision block 345),at step 350, the computer configures (or re-configures) one or moreproperties of the host platform in accordance with the requirementsindicated by the application profile. In response to determining thatthe platform may not be reconfigured so as to enable it to host theapplication (NO branch of decision block 345), at step 360, the computerprevents the deployment of the application on the platform.

Let us now consider an exemplary scenario wherein an applicationdeveloper chooses to deploy an application that has been developed. Thisscenario makes the basic assumptions that the developer has chosen thecloud service provider that the develop wants to use to host theapplication, installing any required software to physically transfer theapplication to the cloud. FIG. 4 is a flow diagram showing an exemplaryimplementation of method 400 for deploying an application, in accordancewith an embodiment of the present invention.

Method 400 starts with step 410 of the provisioning the application, forexample, either to a local client or a remotely-located cloud serviceprovider. By way of example, it may be preferable for a local client toreceive the application and implement (at least part of) the applicationif source code confidentiality requirements mean the source should notbe transferred. Alternatively, it may be preferable to provide theapplication source code to a remotely-located cloud service provider(e.g., a cloud-based system) so as to take advantage of improved (e.g.,increased) processing capabilities.

At step 420, a computer starts a source code scan. The types ofinformation that a scan searches for may include, but is not limited to,a programming language the application code is written in, librariesused by the application (e.g., if the application uses a library that ispart of the Java™ Enterprise Edition specification, a requirement wouldbe flagged that either at a high level a JEE server is required, butmight also imply what particular feature needs to be supported),platform configuration requirements (e.g., HTTP or networkingrequirements requiring a platform to be configured for HTTP loadbalancing etc.), application/middleware requirement (e.g., this maythings such as a particular application server being required to hostthe application, and/or a particular messaging frameworks), data accessconfiguration (e.g., access to any, or a specific, database or filesystem being required), and/or security considerations (e.g., particularauthentication mechanisms, transport layer security, and/or securityrole structures being required). The list in this paragraph is notexhaustive, but is instead intended to demonstrate elements of theplatform requirements that may be determined from the source code scan.For each requirement that is found at step 425, a computer executes step430 wherein a tag descriptive of the requirement is generated and stored(e.g., in a profile associated with the application) and then executesstep 435 wherein the source code scan continues.

When the source code scan is completed (i.e., when the code end isreached at step 440), the tags (requirements) identified in the sourcecode scan are used at step 450 and compared to available platforms.These platforms may have been initially configured, may be discovered,or can register with the deployment server informing it of whatrequirements it can fulfil. The latter will require a defined standardthat a platform can use to register.

Once the platform(s) that fit the requirements are found at step 450, ifrequired, the best/optimal platform may be determined at step 460 basedon the technical and/or business criteria. These considerations may havebeen previously supplied, and may be as simple as a priority orderedlist.

Next, it is determined at step 465 whether the chosen platform isavailable. If the chosen platform is not available, it is determined, atstep 470, whether the chosen platform may be built/provisioned. If thechosen platform may be built/provisioned, the platform isbuilt/provisioned at step 480. Conversely, if the platform cannot bebuilt/provisioned, failure to deploy the application is concluded atstep 475 and this is reported back to the provisioning party of theapplication.

If the chosen platform is available (or has been built/provisioned atstep 480), the application is built and packaged at step 485 accordingto the requirements of the platform, and then the application isdeployed on the platform at step 490.

Successful completion along with any information about how to access theapplication may then be communicated back to the application developer.

From the above description, it will be appreciated that proposedembodiments may provide the benefit that a developer, not knowing ormanually inputting any data on requirements of an application, maydeploy the application to a cloud environment, wherein the applicationmay then be deployed to a suitable host platform. In doing so, theapplication requirements may be profiled and then compared againstproperties and/or capabilities of available platforms so as to determinethe most-appropriate platform on which to deploy the application. If themost-appropriate platform is not available, a suitable platform may beprovisioned (for example, by reconfiguring an available platform) so asto meet the requirements of the application.

In some embodiments, there may be provided a system comprising aprocessing arrangement adapted to implement any processing methodpreviously described with reference to FIG. 1 to FIG. 4.

By way of example, as illustrated in FIG. 5, embodiments may comprise acomputer system/server 501, which may form part of a networked system500. The components of computer system/server 501 may include, but arenot limited to, one or more processing arrangements, for examplecomprising processors or processing units 510, system memory 540, andbus 700 that couples various system components including system memory540 to processing unit 510.

Bus 700 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnect (PCI) bus.

Computer system/server 501 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 501, and it includes both volatileand non-volatile media, removable and non-removable media.

System memory 540 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 550 and/or cachememory 560. Computer system/server 501 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 570 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 700 by one or more datamedia interfaces. As will be further depicted and described below,memory 540 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of embodiments of the invention.

Program/utility 580, having a set (at least one) of program modules 590,may be stored in memory 540 by way of example, and not limitation, aswell as an operating system, one or more application programs, otherprogram modules, and program data. Each of the operating system, one ormore application programs, other program modules, and program data orsome combination thereof, may include an implementation of a networkingenvironment. Program modules 590 generally carry out the functionsand/or methodologies of embodiments of the invention as describedherein.

Computer system/server 501 may also communicate with one or moreexternal devices 600 such as a keyboard, a pointing device, a display650, etc.; one or more devices that enable a user to interact withcomputer system/server 501; and/or any devices (e.g., network card,modem, etc.) that enable computer system/server 501 to communicate withone or more other computing devices. Such communication can occur viaInput/Output (I/O) interfaces 520. Still yet, computer system/server 501can communicate with one or more networks such as a local area network(LAN), a general wide area network (WAN), and/or a public network (e.g.,the Internet) via network adapter 530. As depicted, network adapter 530communicates with the other components of computer system/server 501 viabus 700. It should be understood that although not shown, other hardwareand/or software components could be used in conjunction with computersystem/server 501. Examples, include, but are not limited to: microcode,device drivers, redundant processing units, external disk drive arrays,RAID systems, tape drives, and data archival storage systems, etc.

In the context of the present application, where embodiments of thepresent invention constitute a method, it should be understood that sucha method is a process for execution by a computer, i.e. is acomputer-implementable method. The various steps of the method thereforereflect various parts of a computer program, e.g. various parts of oneor more algorithms.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a storage class memory (SCM), a static random accessmemory (SRAM), a portable compact disc read-only memory (CD-ROM), adigital versatile disk (DVD), a memory stick, a floppy disk, amechanically encoded device such as punch-cards or raised structures ina groove having instructions recorded thereon, and any suitablecombination of the foregoing. A computer readable storage medium, asused herein, is not to be construed as being transitory signals per se,such as radio waves or other freely propagating electromagnetic waves,electromagnetic waves propagating through a waveguide or othertransmission media (e.g., light pulses passing through a fiber-opticcable), or electrical signals transmitted through a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the C programminglanguage or similar programming languages. The computer readable programinstructions may execute entirely on the user's computer, partly on theuser's computer, as a stand-alone software package, partly on the user'scomputer and partly on a remote computer or entirely on the remotecomputer or server. In the latter scenario, the remote computer may beconnected to the user's computer through any type of network, includinga local area network (LAN) or a wide area network (WAN), or theconnection may be made to an external computer (for example, through theInternet using an Internet Service Provider). In some embodiments,electronic circuitry including, for example, programmable logiccircuitry, field-programmable gate arrays (FPGA), or programmable logicarrays (PLA) may execute the computer readable program instructions byutilizing state information of the computer readable programinstructions to personalize the electronic circuitry, in order toperform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

1. A computer-implemented method for deploying an application in adistributed processing environment, the method comprising: analyzing anapplication to determine one or more requirements for a platform of thedistributed processing environment to host the application; generatingan application profile based on the one or more requirements, theapplication profile being representative of the one or morerequirements, the profile comprising one or more tags of the applicationprofile, the one or more tags of the application profile being one ormore text based descriptors representing the one or more requirements;comparing the one or more tags of the application profile with one ormore tags of the platform, the one or more tags of the platform beingone or more text based descriptors describing one or more properties ofthe platform; determining whether the one or more tags of theapplication profile match the one or more tags of the platform; and inresponse to determining that the one or more tags of the applicationprofile match the one or more tags of the platform, deploying theapplication on the platform.
 2. (canceled)
 3. (canceled)
 4. Thecomputer-implemented method of claim 1, further comprising: configuringthe one or more properties of the platform of the distributed processingenvironment, based on the application profile.
 5. Thecomputer-implemented method of claim 1, further comprising: analyzingthe application profile and the one or more properties of each of afirst platforms and a second platform of the distributed processingenvironment; determining a first indicator and a second indicator ofhosting suitability for the first platform and second platform,respectively; and deploying the application on one of the first platformand second platform, based on the first indicator and second indicatorof the hosting suitability.
 6. The computer-implemented method of claim1, wherein the step of analyzing the application comprises analyzing atleast one of: source code of the application, application logic of theapplication, a component or resource of the application, status changesof the application, and input/output data flows of the application,wherein the step of analyzing an application comprises determining atleast one of: a programming language of the application, a class libraryused by the application, a runtime server employed by the application, adatabase employed by the application, a message system employed by theapplication, and an operating system employed by the application. 7.(canceled)
 8. (canceled)
 9. The computer-implemented method of claim 1,wherein the application is adapted to implement a service in a cloudenvironment.
 10. The computer-implemented method of claim 9, wherein theapplication is adapted to implement a part of a micro-service-orientedarchitecture. 11-20. (canceled)